package random;

import java.util.Arrays;

/**
 * 加一
 * <p>
 * 给定一个由 整数 组成的 非空数组所表示的非负整数，在该数的基础上加一。
 * 最高位数字存放在数组的首位， 数组中每个元素只存储单个数字。
 * 你可以假设除了整数 0 之外，这个整数不会以零开头。
 */

public class L66 {

    public static void main(String[] args) {

        int[] digits = {8, 9};
        int[] ints = plusOne(digits);
        Arrays.stream(ints).forEach(System.out::println);
    }

    public static int[] plusOne(int[] digits) {

        int length = digits.length;
        int[] change = new int[length + 1];
        if (digits[length - 1] != 9) {
            digits[length - 1] = digits[length - 1] + 1;
        } else {
            while (digits[length - 1] == 9) {
                if (length - 1 == 0) {
                    change[0] = 1;
                    break;
                } else {
                    digits[length - 1] = 0;
                    length--;
                }
            }
            digits[length - 1] = digits[length - 1] + 1;
        }

        return change[0] == 1 ? change : digits;
    }
}
